#pragma once
#include "instructions/base/instructions.h"
#include "rtda/frame.h"
#include <memory>

namespace jvm {
    namespace instructions {

        class RETURN : public NoOperandsInstruction {
        public:
            void execute(std::shared_ptr<rtda::Frame> frame) override;
        };

        class ARETURN : public NoOperandsInstruction {
        public:
            void execute(std::shared_ptr<rtda::Frame> frame) override;
        };

        class DRETURN : public NoOperandsInstruction {
        public:
            void execute(std::shared_ptr<rtda::Frame> frame) override;
        };

        class FRETURN : public NoOperandsInstruction {
        public:
            void execute(std::shared_ptr<rtda::Frame> frame) override;
        };

        class IRETURN : public NoOperandsInstruction {
        public:
            void execute(std::shared_ptr<rtda::Frame> frame) override;
        };

        class LRETURN : public NoOperandsInstruction {
        public:
            void execute(std::shared_ptr<rtda::Frame> frame) override;
        };

    } // namespace instructions
} // namespace jvm